{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "view-in-github"
   },
   "source": [
    "<a href=\"https://colab.research.google.com/github/jermwatt/machine_learning_refined/blob/main/notes/9_Feature_engineer_select/9_6_Boosting.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "U2Aq04Xh0nCg"
   },
   "source": [
    "## Chapter 9: Principles of Feature Engineering and Selection"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "This notebook contains interactive content from an early draft of the university textbook <a href=\"https://github.com/neonwatty/machine-learning-refined/tree/main\">\n",
    "Machine Learning Refined (2nd edition) </a>.\n",
    "\n",
    "The final draft significantly expands on this content and is available for <a href=\"https://github.com/neonwatty/machine-learning-refined/tree/main/chapter_pdfs\"> download as a PDF here</a>."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "kOQuX7Um0nCj"
   },
   "source": [
    "# 9.6 Feature Selection via Boosting"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "qgsRTFt50nCk"
   },
   "source": [
    "In this Section we discuss on popular way of performing feature selection, called *boosting* or *forward stagewise selection*. Boosting is a 'bottom-up' approach to feature selection wherein we gradually build up our model *one feature at a time* by training a *supervised learner*, *sequentially* one weight at-a-time.  Doing this gives human interpreters an easier way to gauge the importance of individual features, and likewise lets them more easily derive insight about a particular phenomenon."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "id": "B6vkdDtD0nCk"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Requirement already satisfied: github-clone in /Users/jeremywatt/Desktop/machine-learning-refined/venv/lib/python3.10/site-packages (1.2.0)\n",
      "Requirement already satisfied: requests>=2.20.0 in /Users/jeremywatt/Desktop/machine-learning-refined/venv/lib/python3.10/site-packages (from github-clone) (2.32.3)\n",
      "Requirement already satisfied: docopt>=0.6.2 in /Users/jeremywatt/Desktop/machine-learning-refined/venv/lib/python3.10/site-packages (from github-clone) (0.6.2)\n",
      "Requirement already satisfied: charset-normalizer<4,>=2 in /Users/jeremywatt/Desktop/machine-learning-refined/venv/lib/python3.10/site-packages (from requests>=2.20.0->github-clone) (3.4.0)\n",
      "Requirement already satisfied: idna<4,>=2.5 in /Users/jeremywatt/Desktop/machine-learning-refined/venv/lib/python3.10/site-packages (from requests>=2.20.0->github-clone) (3.10)\n",
      "Requirement already satisfied: urllib3<3,>=1.21.1 in /Users/jeremywatt/Desktop/machine-learning-refined/venv/lib/python3.10/site-packages (from requests>=2.20.0->github-clone) (2.2.3)\n",
      "Requirement already satisfied: certifi>=2017.4.17 in /Users/jeremywatt/Desktop/machine-learning-refined/venv/lib/python3.10/site-packages (from requests>=2.20.0->github-clone) (2024.12.14)\n",
      "\n",
      "\u001b[1m[\u001b[0m\u001b[34;49mnotice\u001b[0m\u001b[1;39;49m]\u001b[0m\u001b[39;49m A new release of pip is available: \u001b[0m\u001b[31;49m24.2\u001b[0m\u001b[39;49m -> \u001b[0m\u001b[32;49m24.3.1\u001b[0m\n",
      "\u001b[1m[\u001b[0m\u001b[34;49mnotice\u001b[0m\u001b[1;39;49m]\u001b[0m\u001b[39;49m To update, run: \u001b[0m\u001b[32;49mpip install --upgrade pip\u001b[0m\n",
      "chapter_9_datasets already cloned!\n",
      "chapter_9_library already cloned!\n",
      "The autoreload extension is already loaded. To reload it, use:\n",
      "  %reload_ext autoreload\n"
     ]
    }
   ],
   "source": [
    "# install github clone - allows for easy cloning of subdirectories\n",
    "!pip install github-clone\n",
    "from pathlib import Path \n",
    "\n",
    "# clone datasets\n",
    "if not Path('chapter_9_datasets').is_dir():\n",
    "    !ghclone https://github.com/neonwatty/machine-learning-refined-notes-assets/tree/main/notes/9_Feature_engineer_select/chapter_9_datasets\n",
    "else:\n",
    "    print('chapter_9_datasets already cloned!')\n",
    "\n",
    "# clone library subdirectory\n",
    "if not Path('chapter_9_library').is_dir():\n",
    "    !ghclone https://github.com/neonwatty/machine-learning-refined-notes-assets/tree/main/notes/9_Feature_engineer_select/chapter_9_library\n",
    "else:\n",
    "    print('chapter_9_library already cloned!')\n",
    "\n",
    "# append path for local library, data, and image import\n",
    "import sys\n",
    "sys.path.append('./chapter_9_library') \n",
    "\n",
    "# import section helper\n",
    "import section_9_6_helpers\n",
    "\n",
    "# dataset paths \n",
    "data_path_1 = 'chapter_9_datasets/boston_housing.csv'\n",
    "data_path_2 = 'chapter_9_datasets/credit_dataset.csv'\n",
    "\n",
    "# standard imports\n",
    "import matplotlib.pyplot as plt\n",
    "from matplotlib import gridspec\n",
    "import numpy as np\n",
    "\n",
    "import IPython, copy\n",
    "from IPython.display import Image, HTML\n",
    "\n",
    "# this is needed to compensate for matplotlib notebook's tendancy to blow up images when plotted inline\n",
    "%matplotlib inline\n",
    "from matplotlib import rcParams\n",
    "rcParams['figure.autolayout'] = True\n",
    "\n",
    "%load_ext autoreload\n",
    "%autoreload 2"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "f5zYPNgy0nCm"
   },
   "source": [
    "## Boosting based feature selection"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "CbZI-92Q0nCm"
   },
   "source": [
    "In tuning a model's weights one-at-a-time we of course do *not* want to tune them *in any order*, e.g., we do not want to just tune them at random, as this will not aid human interpretation.   Instead we want to tune them *starting with the most important feature-touching weight* (that is $w_1,\\,...,w_N$), then tune the *second most important feature-touching weight*, then the third, and so forth.  Here by 'importance' we mean how each *input feature* contributes to the final supervised learning model as determined by its associated weight, or in other words how each contributes to minimizing the corresponding cost as much as possible. "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "6Y4c8JwQ0nCm"
   },
   "source": [
    "Now at the start of the weight learning process *we begin with just the bias*.  That is we begin with a  model - which we will denote as $\\text{model}_0$ - that consists of the bias $w_0$ alone\n",
    "\n",
    "\\begin{equation}\n",
    "\\text{model}_0\\left(\\mathbf{x},\\mathbf{w}\\right) = w_0.\n",
    "\\end{equation}"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "rmrCOGOz0nCm"
   },
   "source": [
    "To begin we first tune the *bias* parameter $w_0$ by minimizing an appropriate cost (depending on whether we are solving a regression or classification problem) over *this variable alone*.  For example, if we are performing regression employing the Least Squares cost and we minimize  \n",
    "\n",
    "\\begin{equation}\n",
    "\\frac{1}{P}\\sum_{p=1}^{P}\\left(\\text{model}_0^{\\,}\\left(\\mathbf{x},\\mathbf{w}\\right)  - \\overset{\\,}{y}_{p}^{\\,}\\right)^{2} =  \\frac{1}{P}\\sum_{p=1}^{P}\\left(w_0^{\\,}   - \\overset{\\,}{y}_{p}^{\\,}\\right)^{2}\n",
    "\\end{equation}\n",
    "\n",
    "which gives the optimal value for our bias $w_0^{\\,} \\longleftarrow w_0^{\\star}$.  Thus our starting model is now\n",
    "\n",
    "\\begin{equation}\n",
    "\\text{model}_0^{\\,}\\left(\\mathbf{x},\\mathbf{w}\\right) = w_0^{\\star}.\n",
    "\\end{equation}"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "Ob4amhmz0nCn"
   },
   "source": [
    "Next, at the first round of boosting, in order to determine the most important feature-touching weight $w_1,\\,w_2,\\,...,w_N$ we *try out each one* by minimizing a cost over each one individually having already set the bias optimally.  That is we minimize $N$ cost functions over a single feature-touching weight alone, so e.g., in the case of Least Squares regression the $n^{th}$ of these subproblems takes the form\n",
    "\n",
    "\\begin{equation}\n",
    " \\frac{1}{P}\\sum_{p=1}^{P}\\left(\\text{model}_0^{\\,}\\left(\\mathbf{x}_p,\\mathbf{w}\\right) + w_n^{\\,}x_{n,p}   - \\overset{\\,}{y}_{p}^{\\,}\\right)^{2} =  \\frac{1}{P}\\sum_{p=1}^{P}\\left(w_0^{\\star} + x_{n,p}w_n^{\\,}   - \\overset{\\,}{y}_{p}^{\\,}\\right)^{2}.\n",
    "\\end{equation}\n",
    "\n",
    "Again, the bias weight has already been set optimally and is *not* tuned in each subproblem above - we only tune the weight $w_n$.  "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "-ft7tape0nCn"
   },
   "source": [
    "The feature-touching weight that produces the *smallest* value from these $N$ subproblems corresponds to the individual feature that helps best explain the relationship between the input and output of our dataset, and it is therefore most important feature-touching weight we learn.  Denoting this weight as $w_{s_1}$, we then *fix* it at its optimally determined value $w_{s_1}^{\\,} \\longleftarrow w_{s_1}^{\\star}$ (discarding all other weights tuned in each of these subproblems) and update our `model` accordingly.  We call our updated `model` $\\text{model}_1$ which is a sum of our optimal bias and this newly determined optimal feature-touching weight\n",
    "\n",
    "\\begin{equation}\n",
    "\\text{model}_1^{\\,}\\left(\\mathbf{x},\\mathbf{w}\\right) = \\text{model}_0^{\\,}\\left(\\mathbf{x},\\mathbf{w}\\right) + x_{s_1}^{\\,}w_{s_1}^{\\star}= w_0^{\\star} + x_{s_1}^{\\,}w_{s_1}^{\\star}.\n",
    "\\end{equation}"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "6sD-B_DB0nCn"
   },
   "source": [
    "Next, at the second round of boosting, we determine the *second* most important feature-touching weight we then sweep through the remaining $N-1$ weights (i.e., excluding $w_0$ and $w_{s_1}$ which we have already tuned) and try out each one individually by minimizing a cost over each weight independently.  e.g., in the case of Least Squares regression $n^{th}$ such cost looks like\n",
    "\n",
    "\\begin{equation}\n",
    " \\frac{1}{P}\\sum_{p=1}^{P}\\left(\\text{model}_1^{\\,}\\left(\\mathbf{x}_p,\\mathbf{w}\\right) + w_n^{\\,}x_{n,p}   - \\overset{\\,}{y}_{p}^{\\,}\\right)^{2} =  \\frac{1}{P}\\sum_{p=1}^{P}\\left(w_0^{\\star} + x_{s_1}^{\\,}w_{s_1}^{\\star} + x_{n,p}w_n^{\\,}   - \\overset{\\,}{y}_{p}^{\\,}\\right)^{2}.\n",
    "\\end{equation}\n",
    "\n",
    "Again with each of these subproblems $w_0^{\\star}$ and $w_{s_1}^{\\star}$ have already been set optimally, we only tune the weight $w_n$ in each instance."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "9ypeI2rU0nCo"
   },
   "source": [
    "The feature-touching weight that produces the *smallest* value from these $\\left(N-1\\right)$ subproblems corresponds to the second most important feature that helps explain the relationship between the input and output of our dataset.  Denoting the cost minimizing weight $w_{s_2}$, we then *fix* the value of this weight at its optimally determined value $w_{s_2}^{\\,} \\longleftarrow w_{s_2}^{\\star}$ (and none of the other weights tuned in each of these subproblems) and update our model accordingly.  We call our updated model $\\text{model}_2$ which is a sum of our first three optimally tuned weights\n",
    "\n",
    "\\begin{equation}\n",
    "\\text{model}_2^{\\,}\\left(\\mathbf{x},\\mathbf{w}\\right) = \\text{model}_1^{\\,}\\left(\\mathbf{x},\\mathbf{w}\\right) + x_{s_2}^{\\,}w_{s_2}^{\\star}= w_0^{\\star} + x_{s_1}^{\\,}w_{s_1}^{\\star} + x_{s_2}^{\\,}w_{s_2}^{\\star}.\n",
    "\\end{equation}"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "Pw4jxmGO0nCo"
   },
   "source": [
    "In general, at the $M^{th}$ round of boosting, to determine the $M^{th}$ most important feature-touching weight (where $M\\geq 2$) we follow the same pattern.  When we do this we have already determined the optimal setting of our bias and the top $M-1$ most important feature-touching weights, our model taking the form\n",
    "\n",
    "\\begin{equation}\n",
    "\\text{model}_{M-1}^{\\,}\\left(\\mathbf{x},\\mathbf{w}\\right) = \\text{model}_{M-2}^{\\,}\\left(\\mathbf{x},\\mathbf{w}\\right) + x_{s_{m-1}}^{\\,}w_{s_{M-1}}^{\\star}= w_0^{\\star} + x_{s_1}^{\\,}w_{s_1}^{\\star} + \\cdots + x_{s_{M-1}}^{\\,}w_{s_{M-1}}^{\\star}.\n",
    "\\end{equation}\n",
    "\n",
    "where here $w_{M-1}^{\\star}$ denotes our optimally tuned $\\left(M-1\\right)^{th}$ most important feature-touching weight.\n",
    "\n",
    "\n",
    "We then must setup and solve $\\left(N-M + 1\\right)$ subproblems, one for each feature-touching weight we have not yet resolved.  For example, in the case of Least Squares regression the $n^{th}$ of these  takes the form\n",
    "\n",
    "\\begin{equation}\n",
    " \\frac{1}{P}\\sum_{p=1}^{P}\\left(\\text{model}_{M-1}^{\\,}\\left(\\mathbf{x}_p,\\mathbf{w}\\right) + w_n^{\\,}x_{n,p}   - \\overset{\\,}{y}_{p}^{\\,}\\right)^{2}\n",
    "\\end{equation}\n",
    "\n",
    "where again in each case we only tune the individual weight $w_n$.  Denoting this weight $w_{s_M}$ we then fix its optimal value $w_{s_M}^{\\,} \\longleftarrow w_{s_M}^{\\star}$ and add its contribution to the running model as \n",
    "\n",
    "\\begin{equation}\n",
    "\\text{model}_{M}^{\\,}\\left(\\mathbf{x},\\mathbf{w}\\right) = \\text{model}_{M-1}^{\\,}\\left(\\mathbf{x},\\mathbf{w}\\right) + x_{s_{M}}^{\\,}w_{s_{M}}^{\\star}.\n",
    "\\end{equation}\n",
    "\n",
    "Given that we have $N$ input features we can continue until $M \\leq N+1$.  Note too how in building $\\text{model}_M$ we have constructed a sequence of models $\\left\\{\\text{models}_m\\right\\}_{m=1}^M$."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "6xJrUqlG0nCo"
   },
   "source": [
    "This method of model building (via the construction of a simpler series of models) adding one feature at-a-time - and tuning only the parameters of the feature added keeping all others fixed at their previously tuned values - is referred to as *boosting*, or similarly as *forward stage-wise selection*.  "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "DrBeX-B_0nCo"
   },
   "source": [
    "## The importance of standard normalizing input features"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "X08j5GOn0nCp"
   },
   "source": [
    "Regardless of how we select $M$, note that because we are trying to determine the *importance* of each input feature here that before we begin the process of boosting we *always need to standard normalize the input to our dataset* as detailed in [Section 9.3](https://jermwatt.github.io/machine_learning_refined/notes/9_Feature_engineer_select/9_3_Scaling.html).  By normalizing each input feature distribution we can fairly compare each input feature's contribution and determine the importance of each."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "ZFRlZIMy0nCp"
   },
   "source": [
    "## How many features should be selected?"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "lMeSWuvY0nCp"
   },
   "source": [
    "Because feature selection is done for the purposes of *human interpretation* the number of features $M$ to select can be based on several factors.  A benchmark value for $M$ can be hand chosen based on the desire to explore a dataset, and the procedure halted once this number of rounds have completed.  One can also halt exploration when adding additional features to the model results in very little decrease in the cost, as most of the correlation between inputs and outputs has already been explained.  Finally, $M$ can be chosen entirely based on the sample statistics of the dataset via a procedure known as *cross-validation* (which we discuss in Section 12.5)."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "vFRkX2BT0nCp"
   },
   "source": [
    "#### <span style=\"color:#a50e3e;\">Example 1: </span>  Exploring features for predicting housing prices via boosted regression"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "pCHgkc--0nCp"
   },
   "source": [
    "Below we show the results of running the boosting procedure detailed above - using a Least Squares cost and Newton's method optimizer - and the Boston Housing dataset which can be [downloaded here](http://www.cs.toronto.edu/~delve/data/boston/bostonDetail.html).  This dataset consists of a set of basic statistics on $506$ homes in the city of Boston in the US.  The input statistics are to be used to predict the median value of each car.  The $N=13$ dimensional input features include:  per capita crime rate by town (feature $1$), average number of rooms per dwelling (feature $6$), weighted distances to five Boston employment centers (feature $8$), and the percentage of the local population deemed 'lower class' (denoted LSTAT, feature $13$)."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "Qj0hAL650nCp"
   },
   "source": [
    "The result of running $M=5$ rounds of boosting is visualized in the top panel below.  This special kind of cost function history was used in the prior example, and in this plot each weight / feature added to the model at each round of boosting is shown along the horizontal axis (starting with the bias which has index $0$).  As we can see, the first two features found via boosting that most correlate with the output are *LSTAT* (the top feature, number $13$) and the *average number of rooms per dwelling* (the second most important feature, number $6$).  Examining the histogram of model weights in the bottom panel, we can see that unsurprisingly the LSTAT value is highly negatively correlated with the output (median home value) while the average number of rooms feature is positively correlated with the output."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "id": "BJtfyajO0nCq",
    "outputId": "235ca336-1b3e-448b-8b52-4ac67d4d3fe0",
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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WUJCAkxNTWFoaAgLCwvI5XK1baytrYtdr76+PkxNTVUeVUH/fn2hE/k9kJ9fcsP8fODQ90h364dh54DLVePueCIiIiIiogrDpLsSeHl5ISIiQqXswIED8PLyAgDo6enBzc1NpU1+fj4iIiKUbaqTiW+9hdy4W8DBjSU3PLgBSIgGer2FLfeB1keAwNPA6eRKCZOIiIiIiEjjmHSXw5MnT3DhwgVcuHABQMGUYBcuXMCdO3cAFNz2PXLkSGX78ePH49atW5g+fTquXbuGb775Btu3b8e7776rbBMaGoo1a9Zgw4YNuHr1KiZMmID09HSMHj26UvetInh6eiJk1ChIK8YBv68resU7Px/4fR2kFW+i7YBRsGjVXln1UwLQ/hjQ4wRw5FElB05ERERERFTBdLQdQHV05swZdO3aVfk8NDQUABASEoL169cjLi5OmYADgKOjI3755Re8++67+Oqrr9CgQQP873//g7+/v7JNUFAQHj58iHnz5iE+Ph6urq4IDw8vMrhadSBJEtasXg0A2PDVGOhs/6hgNHNzayApDjqHv0duXDRGjhqFNatXI0cmYU0M8Nkt4F5mwToOJBY8OtUB5jQG/OsB7PZNRERERETVDefprkGqyjzdCkIInDp1Ciu++Qa7f9qDJ6kpqGVqhsD+/TDxrbfQvn17lQHUsvKAjXeBT24CtzJU1+VmBsxuDARaAzIm30REREREpGWlzb+YdNcgVS3pfpYQolSjlOfmA9vuAx/fAP56olrXohYwqzEQbAvosHMEERERERFpSWnzL6YtVGlKOy2YjgwY3gC45APscAPamf1X99cTYMQFoGkksCam4Oo4ERERERFRVcWkm6osmQQMsAHOdAL2tS/o361wKwMYdwlodAj46haQweSbiIiIiIiqICbdVOVJEhBgCRz1Bg57AT3q/Vd3LxOY8hfgEAGE3QBScrQXJxERERER0bOYdFO10qUu8JsncKoT0L/QwO4Ps4HZ1wD7CGDudSAxW3sxEhERERERKTDppmrJozaw2wO42AUYavvfiZySC3z0T8GV76l/AfcztRklERERERG97Jh0U7XW2hT4oR1wvSsw1g7Q/XestvQ8YMktwPEgMOEScDuj5PUQERERERFpApNuqhEaGwP/cwFudgMmOQAG/57Z2fnAqhig8SFg1AXg+pOS1kJERERERFSxmHRT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zz/DzMwMDRs2xLvvvqucwqskbdu2xdGjRzFz5kzs27cPkiShU6dOOHbsGGbNmgVA/aBlZfH999/j3Xffxd69e5GSkgIhBDp16lQpSbexsTEOHz6MWbNmYdeuXTh37hxatmyJbdu2ISUlpUjSDQC9e/fG+fPn8dlnn+H333/HgQMHYGxsjAYNGmD06NF47bXXAAA7duzAd999h1deeQWhoaEq65g9ezYOHDiA5cuXw9/fH3369NH4vhIRkXZJ4nmjqRARERH9Ky8vD40aNcLTp0+r/YBqRERElYF9uomIiKiI3NxcJCYmFin/5JNPEBMTg8DAwMoPioiIqBrilW4iIiIqIjk5GVZWVnjllVfQpEkT5OTk4OTJkzh9+jRsbGxw9uxZ2NjYaDtMIiKiKo9JNxERERWRnZ2NKVOm4ODBg7h//z4yMzNhY2ODnj17Yu7cuahfv762QyQiIqoWmHQTERERERERaQj7dBMRERERERFpCJNuIiIiIiIiIg1h0k1ERERERESkIUy6iYiIiIiIiDSESTcRERERERGRhjDpJiIiIiIiItIQJt1EREREREREGsKkm4iIiIiIiEhDmHQTERERERERaQiTbiIiIiIiIiINYdJNREREREREpCFMuomIiIiIiIg0hEk3ERERERERkYYw6SYiIiIiIiLSECbdRERERERERBrCpJuIiIiIiIhIQ5h0ExEREREREWkIk24iIiIiIiIiDWHSTURERERERKQhTLqJiIiIiIiINIRJNxEREREREZGGMOkmIiIiIiIi0hAm3UREREREREQawqSbiIiIiIiISEOYdBMRERERERFpCJNuIiIiIiIiIg1h0k1ERERERESkIUy6iYiIiIiIiDSESTcRERERERGRhjDpJiIiIiIiItIQJt1EREREREREGsKkm4iIiIiIiEhDmHQTERERERERaQiTbiIiIiIiIiINYdJNREREREREpCFMuomIiIiIiIg0hEk3ERERERERkYYw6SYiIiIiIiLSECbdRERERERERBrCpJuIiIiIiIhIQ5h0ExEREREREWkIk24iIiIiIiIiDWHSTURERERERKQhTLqJiIiIiIiINIRJNxEREREREZGGMOkmIiIiIiIi0hAm3UREREREREQawqSbiIiIiIiISEOYdBMRERERERFpCJNuIiIiIiIiIg1h0k1ERERERESk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tWrVEgYGBsLBwUH4+/uLFStWiIcPH6q0Ly5Rzs/PF6tWrRKtW7cW+vr6wtLSUoSEhIi4uDjh5+cnABSZH7c8SXdOTo54//33RaNGjYSurm6J6yjOb7/9pjw2I0eOLLZdRkaGmDNnjnB2dhb6+vrCzs5OjB8/XiQmJqqdW1uIkhPCdevWKb+wW1lZiddff73EdQlRttdnz549YsyYMaJly5aidu3awsjISDRp0kS8/vrraucmLk5xCYgQBUnYhg0bRLdu3USdOnWErq6usLW1FV5eXuKDDz4Q169fV2mflJQkJkyYIBwcHIS+vr5wcnISM2bMEOnp6coksDKS7vLELoQQFy9eFH379hVmZmbC2NhYeHl5ib179z537nV1FOdqZmammD17tnBwcBB6enrC3t5ezJkzp9gffxTef/99AUDMmjWr1NssrPDxXrdunXB1dRUGBgaibt26YsSIESI2Nlbtcjk5OeKrr74Sbdu2FUZGRsLIyEi4u7uLFStWqJ3DXIiCeb+nTp0qGjVqJPT09ETt2rVFjx491M73ffjwYTFx4kTh6uoq6tatKwwMDISTk5MIDg5WO1d7QkKCGDFihLC2tlYmxIVfh4pMuoUoOKd8fX2FsbGxMDU1FT169BAnT54UH330kQAgVq1apXadRESSEBUw3CoREdFzPHnyBI6OjsjMzERycrLWR1smqo6EEGjevDn+/vtv3LhxA05OTtoO6aUXEBCA3377DSdOnICnp6e2wyGiKoh9uomIqEJdvXoVGRkZKmWpqakYN24cEhMTERwczISbqJz+7//+D9evX0evXr2YcFeie/fuFRkDID8/H19++SV+++03NGnSBO3bt9dSdERU1fFKNxERVajx48dj06ZNcHNzg42NDRITE3H+/HnliMwnTpxAvXr1tB0mUbXy+uuvIzk5GXv37kVubi5OnjwJNzc3bYf10ti6dStee+01tG3bFvb29sjKysLly5dx+/ZtGBkZITw8/LkjsRPRy4tJNxERVaj9+/fjm2++wdmzZ5GYmAigYNTuvn37Yvr06UWm5CKi55MkCTo6OnB2dsaHH36IQYMGaTukl8o///yDsLAwHD16FAkJCcjMzIS1tTV8fX0xc+ZMtGjRQtshElEVxqSbiIiIiIiISEPYp5uIiIiIiIhIQ5h0ExEREREREWmIjrYDoIqTn5+P+/fv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h4dzjm4iIiIiIqJqrFxJd25uLoYOHYqdO3dCCAFJklB4um/F85qadAPA22+/jbffflttnbo+8IMHD8bgwYOLXZ8kSfjwww/x4YcfVlSIREREREREpGXl6tP9xRdfYMeOHRg9ejTOnDkDIQSmTJmCqKgoLF68GLVr18bgwYNx8+bNio6XiIiIiIiIqNoo15XuzZs3o1WrVvjf//6nLKtduzY8PT3h6emJXr16oX379ujWrRvefPPNCguWiIiIiIiIqDop15XuGzduwNfXV/lckiTk5OQon7ds2RJ9+/bFypUrXzhAIiIiIiIiouqqXEm3np4ejIyMlM9r1aqFBw8eqLSxt7fHP//882LREREREREREVVj5Uq67ezsEBsbq3zerFkzHDlyRGUwtRMnTqBOnTovHiERERERERFRNVWupNvHx0clyQ4KCsL169fRp08frFixAkOHDsWxY8cQEBBQocESERERERERVSflGkhtzJgxyMvLw71799CgQQNMmjQJkZGR2Lt3L/bt2wcAaN++PT755JMKDZaIiIiIiIioOilX0t2uXTuVQdJ0dXWxZ88enDlzBjdv3oS9vT3at28PmaxcF9KJiIiIiIiIaoRyJd3FcXd3h7u7e0WukoiIiIiIiKjaKtel6M6dO2PNmjVITk6u4HCIiIiIiIiIao5yJd0nTpzA+PHjYWNjg0GDBuGnn35SmaebiIiIiIiIiMqZdN+/fx9LlixBy5YtsXPnTgwYMAA2NjaYOHEi/vjjj4qOkYiIiIiIiKhaKlfSXa9ePUyePBlnzpzBX3/9hZkzZ8LExAQrV65E586d0bhxY3zwwQe4ceNGRcdLREREREREVG288PDizZo1w6JFixAdHY1Dhw5hzJgxePToET788EM0a9asImIkIiIiIiIiqpYqdPRyHx8f2NnZwcLCAkuWLEFubm5Frp6IiIiIiIioWqmQpDspKQnbtm3Dpk2bcOLECQCAqakpBg8eXBGrJyIiIiIiIqqWyp10Z2dnY8+ePdi0aRPCw8ORnZ0NXV1d9OnTByNGjEDfvn2hr69fkbESERERERERVSvlSrpff/117NixA6mpqRBCoH379hgxYgSCg4NRt27dio6RiIioxlqwYIG2QyAiIiINKlfSvXbtWjg4OGDSpEkYMWIEnJ2dKzouIiIiIiIiomqvXEn3kSNH0KlTp4qO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AACautrmL5uudGdnZ6tPnz41junVq5cyMzMt2xEREdxeDgAAAABoVmwK3VVVVTp9+nSNY06fPq1/voju5OSkli1b2vJxAAAAAAA0STaF7ujoaH3yySf68MMPb9r/8ccf69NPP1VUVJSl7dSpUwoICLCtSgAAAAAAmiCbXhm2bNkyZWVlacyYMVq2bJmioqLk4+OjS5cuaf/+/crNzZWLi4vefPNNSdKPP/6o9PR0/fa3v63T4gEAAAAAaMxsCt09e/ZUZmampk6dquzsbOXm5lr1R0VFKTk5WQ8//LAkycPDQxcvXlTr1q3vumAAAAAAAJoKm0K3JIWEhCgzM1Pnzp3TsWPHZDKZ5ObmppCQEHXo0MFqrKOjo9zd3e+6WAAAAAAAmhKbQ/cNHTp0qBayAQAAAACAjQupAQAAAACA26vVle7nnntOBoNBS5cula+vr5577rlaTW4wGLRu3bq7KrCxKSoq0ksvvaStW7fKwcFBI0eO1FtvvaX77rvvlvvExsZq7969Vm3/9m//ppSUFMv2uXPn9OKLLyojI0P33XefJkyYoKSkJBmNd30zAgAAAADATmqV6FJTU2UwGDR37lz5+voqNTW1VpPfi6F77NixunDhgtLT01VeXq5JkybphRde0MaNG2vcLyEhQYsWLbJs//OicpWVlRo+fLj8/Py0f/9+XbhwQePHj5eTk5OWLl1ab8cCAAAAAKhftQrdZ8+elSTdf//9VtvNzYkTJ7R9+3YdOnRIffr0kSQlJydr2LBhWrFiRY3vIW/durX8/Pxu2rdz5059++23+uKLL+Tr66vQ0FAtXrxYc+fO1cKFC9WiRYt6OR4AAAAAQP2qVegODAyscbu5OHDggDw8PCyBW5IeffRROTg4KCcnR0899dQt992wYYPef/99+fn5acSIEZo/f77laveBAwfUs2dP+fr6WsYPHjxYL774or755huFhYXddM6ysjKVlZVZtk0m090eIgAAAACgDvHA8B0oKCiQj4+PVZvRaFSbNm1UUFBwy/3GjBmjwMBABQQE6Ouvv9bcuXN18uRJffrpp5Z5/zlwS7Js1zRvUlKSfv/739t6OAAAAACAembz6uUVFRX64x//qL59+8rNzc1qwa/c3FxNnjxZp06dqpMi61tiYqIMBkONX999953N87/wwgsaPHiwevbsqbFjxyotLU2bN2/W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",
      "text/plain": [
       "<Figure size 1000x550 with 3 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# load in data\n",
    "data = np.loadtxt(data_path_1,delimiter = ',')\n",
    "x = data[:-1,:]\n",
    "y = data[-1:,:] \n",
    "\n",
    "# import booster\n",
    "mylib = section_9_6_helpers.BoostSetup(x,y)\n",
    "\n",
    "# choose normalizer\n",
    "mylib.choose_normalizer(name = 'standard')\n",
    "\n",
    "# choose cost\n",
    "mylib.choose_cost(name = 'least_squares')\n",
    "\n",
    "# choose optimizer\n",
    "mylib.choose_optimizer('newtons_method',max_its=1)\n",
    "\n",
    "# run boosting\n",
    "mylib.boost(num_rounds=5)\n",
    "\n",
    "# plot round history\n",
    "mylib.plot_history();"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true,
    "id": "DfzxPls00nCq"
   },
   "source": [
    "#### <span style=\"color:#a50e3e;\">Example 2: </span>  Exploring features for classifying credit risk of loan applicants via boosting"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "lfPal-Gf0nCq"
   },
   "source": [
    "Below we show the results of running the boosting procedure detailed above - using a Softmax cost and Newton's method optimizer - and a slightly adjusted version of the *German Credit* dataset which can be [downloaded here](https://archive.ics.uci.edu/ml/datasets/Statlog+%28German+Credit+Data%29).  \n",
    "\n",
    "This is a two-class classification dataset consisting of $1000$ samples, each a set of statistics extracted from loan application to a German bank.  Each input then has an associated label - either a 'good' or 'bad' credit risk as determined by financial professionals.  In constructing a learned classifier for this dataset we create an auotmatic credit risk assessment tool that can help decide whether or not future applicants are good candidates for loans."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "u0JzCtWi0nCr"
   },
   "source": [
    "The $N=20$ dimensional input features includes features like: the individual's current account balance with the bank (feature 1), the duration (in months) of previous credit with the bank (feature 2), the payment status of any prior credit taken out with the bank (feature 3), the amount of credit currently had with the bank (feature 4), and the current value of their Savings/Stocks (feature 6).  These are precisely the top five features found via boosting.  As we can see in the bottom panel, unsurprisingly most of these top features are positively correlated with an individual being a 'good' or 'bad' credit risk."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "id": "xNn7MJeB0nCr",
    "outputId": "ba83e690-499d-4f6b-82f3-10267978bc7f"
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA90AAAIcCAYAAADrDc0jAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAmAlJREFUeJzs3Xd4FFXbx/HfpheSEFpCCQlNaUon0otIkd6bEIodFIwiYgGssSIWBPVVEFFBHxUVFUR6r6I8iihIk14TDC3lvH/g7sOSTUg2u2w2fD/XlQv2zJmZe87OJnvPnDnHYowxAgAAAAAALufj6QAAAAAAACisSLoBAAAAAHATkm4AAAAAANyEpBsAAAAAADch6QYAAAAAwE1IugEAAAAAcBOSbgAAAAAA3ISkGwAAAAAANyHpBgAAAADATUi6AQAe0bJlS1ksFi1dutTToSAPeN/y52q33zfffKNmzZopPDxcFosl1/u21r2W7N69WxaLRXFxcZ4OBUAhQ9INAIXIjBkzZLFYNGTIEE+Hck27FhMWFDxbtmxRz549tWbNGt10000aPHiwEhISFB0d7enQPCIuLk4Wi0W7d+/2dCgArjF+ng4AAAAArjd37lylpaXp0Ucf1bPPPuvpcAq8smXLatu2bfL39/d0KAAKGZJuAACAQmjv3r2SpCpVqng4Eu/g7++vqlWrejoMAIUQ3csBIB/OnDmjyZMnq2nTpoqMjFRgYKBiY2PVuXNnffzxxw7rP//886pbt67CwsIUEhKiGjVq6PHHH9fJkycd7mPTpk3q27evypUrp4CAAIWHh6tixYrq2bOnvvrqK1u9uLg4DR06VJL0wQcf2Lo4WywWtWzZ8orH0qhRI1ksFs2ePTvbOm+++aYsFou6d+9uKzt9+rTeffdd9ejRQ1WqVFFoaKhCQ0N1ww036LHHHtOpU6euuO9LXemZ14kTJ8pisWjixIkOl2/atEkDBw5U+fLlFRgYqGLFiqldu3b67rvv8hSHJO3Zs0cvvPCCWrdubdte0aJF1bRpU7399tvKzMx0GJvVpe9BXru1HjhwQImJiapWrZpCQkIUFhamBg0a6M0331R6enqW+kePHtXrr7+uW2+9VRUqVFBwcLDCw8NVv359vfDCCzp37ly2+8rreWy1ZcsW9ejRQyVKlFBgYKCqV6+uV155RcaYXB+nZP+e7t27V8OHD1dMTIz8/f3tHpXI6+dn6dKlVzz/s3sU4NLyzz//XE2bNlV4eLhCQ0PVpEmTHM+nffv2adiwYSpdurSCgoJUpUoVPfbYYzp79mzuG+Uy6enpmjZtmho3bqyIiAjbdu+//37t37/frq61PadPny5JGjp0aJ5+F1zu3XffVb169RQaGqqiRYvq1ltv1dq1a7Otf+LECT366KOqUaOG7dytV6+eXnzxxRzbYP369erTp4/KlCmjgIAAlSpVSp07d9bChQsd1j9//rxeeukl1atXT2FhYQoICFB0dLQaNGighx9+WCdOnJD0v8du9uzZI0mqUKGC3efS+rsmp2e683M+7NmzR0OGDFF0dLTtfZswYYLOnTvHGAnAtcIAAJyyd+9eU716dSPJhISEmFtuucX069fPNGvWzERERJjY2Fi7+sePHze1a9c2kkx4eLjp0qWL6dmzpylRooSRZCpUqGB27dplt86PP/5o/P39jSRTq1Yt06tXL9O9e3fTsGFDExgYaLp27Wqr++CDD5omTZoYSaZSpUomISHB9pOUlHTF43n77beNJNOuXbts69StW9dIMl9//bWtbMWKFUaSKVmypGnatKnp27evadu2rSlevLiRZCpXrmyOHTuWZVstWrQwksySJUtyVW41YcIEI8lMmDAhy7LJkycbHx8fI8nUrl3b9OrVyzRt2tQEBAQYSebJJ5+8Yjtc6umnn7a9NzfffLPp16+fadGihW17PXr0MJmZmbb6X375pUlISDCSjCS79yAhIcEcPXo0V/tdtmyZiYyMNJJMXFyc6dKli2nXrp2trG3btubChQt263z44YdGkilbtqxp0aKF6devn7n55ptNkSJFjCTTqFEjc+7cuSz7yut5bH1/HnnkERMQEGCqVatmaxdfX18jyYwaNSpP7Wx9TwcMGGCKFStmoqOjTc+ePU2PHj3Mgw8+aIxx7vOzZMkSI8m0aNEi231b36vsysePH28sFotp0qSJ6du3r6lVq5aRZCwWi/niiy+yrLdt2zZTqlQpI8mULl3a9O7d29x6660mODjYNGrUyDRq1CjH89uRc+fOmTZt2hhJJigoyHTo0MH07dvXxMTEGEmmRIkSZtOmTbb61vOwUqVKRpJp0qRJnn4XXHr8DzzwgLFYLKZp06amf//+pmbNmkaS8fPzc3j8O3fuNLGxsbbfCT17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ixamf//+tjmCH3/88WynxsrreezslG45yc06znx+jDHm888/NxaLxUgytWvXNr179zb16tUzFovFjB8//opThmUnu3b49ddfbTGVKVPG9OnTx3Tq1MmEhISYm266yTRq1CjPU0SdO3fO3HzzzbZ5s2+99VbTt29fU758eSPJFC9e3GzcuDHLeq6aMsxisZjmzZub/v37mxtuuMFIMr6+vuazzz7Lst7OnTttn/lSpUqZXr16ma5du5rw8HAjydStW9fhFIhvv/228fHxsdUZMGCA7feIJDNx4kS7+tbfO+Hh4aZly5ZmwIABpnv37rZ9R0REmJ9++slunTfffNM2hVePHj1sn8vff//dGJO7KcOyk935sHXrVlOsWDEjyZQtW9Z2PoSGhpomTZrYzodLp7oDUPiQdANAPpw+fdq88MILpkGDBiYsLMwEBgaa2NhY06VLFzN79uws9VNTU01SUpKpXbu2CQkJMUFBQaZatWrm0UcfdfhFdNasWWbo0KGmZs2aplixYrbtd+jQwXz55ZcOE+GtW7eaLl26mJIlS9q+xOY0T3F27r33XtsXzSslUHPnzjWNGzc2RYsWNUWKFDH169c3b731lsnMzMxz0m2MMSdPnjQjR4405cqVM/7+/qZs2bLmzjvvNIcPH75igrZ161Zz5513mipVqpigoCATEhJiKlasaNq1a2def/11s3///ly3wYULF8xLL71kbrjhBhMSEmKKFStm2rZta3744Yccv6CfPXvWPPzww6Zy5comICDA1o7ZzQ/syOHDh80TTzxh6tata8LCwkxAQIApV66cady4sZkwYYL55Zdf7OpnZmaa9957z9SrV88UKVLEREREmKZNm9rOw5yShrycx55Kuo3J++fH6ttvvzVNmjQxISEhJjQ01Nx0001mzpw5xpgrz9OdnZzaYc+ePWbIkCEmKirKBAQEmIoVK5qxY8ea1NTUK7ZfdtLS0sxbb71lbrrpJtv5UKlSJXPfffeZv//+2+E6rki6jTFm6tSppnbt2iY4ONiEh4eb9u3b55gkHj9+3IwbN85Uq1bN9hmsU6eOef75582ZM2eyXW/t2rWmV69eJjo62vj5+ZnixYubjh07mh9++CFL3R07dpiJEyeam2++2ZQvX94EBQWZyMhIc+ONN5pHHnnEbh5wq4yMDJOUlGRq1Khhm9f90vfCHUm3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zZopMjJSkZGRatOmTY71AQAAAADXHqeS7pEjR6p3797auHGjVq5cqQ4dOujRRx+1Lf/111/1888/q3Xr1i4L1N3mzJmjxMRETZgwQZs3b1atWrXUrl07HTlyxGH9pUuXqn///lqyZInWrFmjmJgYtW3bVvv377/KkQMAAAAACiqnpgyzSklJkcViUVhYmF35sWPHtH//fsXFxSkiIiLfQV4N8fHxatCggd58801JUmZmpmJiYnTffffpkUceueL6GRkZioyM1JtvvqnBgwdfsT5ThgEAAACA98ptTueXn51kt+ESJUqoRIkS+dn0VXXhwgVt2rRJ48aNs5X5+PioTZs2WrNmTa62cebMGaWlpalYsWIOl58/f95u8LmUlJT8BQ0AAAAAKPDylXSnpqZq7ty52rJli1JSUhQeHq7atWurW7duCg0NdVWMbnfs2DFlZGQoKirKrjwqKkq///57rrYxduxYlSlTRm3atHG4PCkpSU8++WS+YwUAAAAAeA+nk+7PP/9cd955p06dOqVLe6hbLBYVLVpU7777rnr06OGSIAu6559/XrNnz9bSpUsVFBTksM64ceOUmJhoe52SkmI31zkAAAAAoPBxKulevXq1+vXrJ19fX91+++1q1aqVSpcurUOHDmnJkiX64IMP1K9fPy1btkyNGjVydcwuV6JECfn6+urw4cN25YcPH1Z0dHSO67788st6/vnn9eOPP+rGG2/Mtl5gYKACAwNdEi8AAAAAwDs4NXr5c889p8DAQK1bt05vv/22+vXrpxYtWqhv376aNm2a1q1bp4CAAD333HOujtctAgICVK9ePS1atMhWlpmZqUWLFuV40eDFF1/U008/rfnz56t+/fpXI1QAAAAAgBdxKules2aN+vbtq1q1ajlcfuONN6pPnz5avXp1voK7mhITE/Xuu+/qgw8+0LZt23TPPfcoNTVVQ4cOlSQNHjzYbqC1F154QU888YTef/99xcXF6dChQzp06JD++ecfTx0CAAAAAKCAcap7+ZkzZ7IMOna5qKgonTlzxqmgPKFv3746evSoxo8fr0OHDql27dqaP3++7Tj37t0rH5//XaOYOnWqLly4oF69etltZ8KECZo4ceLVDB0AAAAAUEA5NU93tWrVVKRIEW3YsCHbOg0bNtTp06e1bdu2fAVYWDFPNwAAAAB4r9zmdE51L+/Tp482bdqkhIQEHThwwG7ZwYMHNWTIEG3atEl9+/Z1ZvMAAAAAABQKTt3pPnPmjFq1aqUNGzYoICBAlStXVlRUlA4fPqwdO3bowoULatiwoZYsWaLg4GB3xO31uNMNAAAAAN7LrXe6Q0JCtHz5ck2cOFHlypXTb7/9piVLlui3335TuXLl9OSTT2rZsmUk3AAAAACAa5pTd7ovd/r0aaWkpCg8PFxhYWGuiKvQ4043AAAAAHiv3OZ0To1efrmwsDCSbQAAAAAALuNU9/JVq1YpMTFRhw4dcrj84MGDSkxM1Nq1a/MVHAAAAAAA3syppHvSpEn65ptvFB0d7XB56dKlNW/ePL366qv5Cg4AAAAAAG/mVNK9YcMGNW3aNMc6zZs35043AAAAAOCa5lTSfeTIEZUtWzbHOtHR0Tpy5IhTQQEAAAAAUBg4lXQXLVpUe/fuzbHOnj17VKRIEaeCAgAAAACgMHAq6b7pppv05Zdfat++fQ6X7927V3PnzlXjxo3zFRwAAAAAAN7MqaQ7MTFRZ86cUZMmTTRz5kwdPHhQ0sVRyz/44AM1adJEZ8+e1YMPPujSYAEAAAAA8CZOzdPdvHlzTZo0SQ8++KCGDh0qSbJYLDLGSJJ8fHz02muvqXnz5q6LFAAAAAAAL2Mx1kzZCb/88oumTZumDRs2KDk5WUWLFlXDhg119913q2bNmq6Ms9BJSUlRRESEkpOTFR4e7ulwAAAAAAB5kNucLl9JN5xH0g0AAAAA3iu3OZ1Tz3QDAAAAAIArI+kGAAAAAMBNSLoBAAAAAHATkm4AAAAAANyEpBsAAAAAADch6QYAAAAAwE1IugEAAAAAcBOSbgAAAAAA3ISkGwAAAAAANyHpBgAAAADATUi6AQAAAABwE5JuAAAAAADchKQbAAAAAAA3IekGAAAAAMBNSLovMWXKFMXFxSkoKEjx8fFav359jvU/++wzVa1aVUFBQbrhhhv03XffXaVIAQAAAADegKT7X3PmzFFiYqImTJigzZs3q1atWmrXrp2OHDnisP7q1avVv39/DR8+XD/99JO6deumbt266b///e9VjhwAAAAAUFBZjDHG00EUBPHx8WrQoIHefPNNSVJmZqZiYmJ033336ZFHHslSv2/fvkpNTdW8efNsZTfddJNq166tadOmXXF/KSkpioiI0IEDBxQeHu66AwEAAAAAuF1KSorKlCmj5OTkHHM6v6sYU4F14cIFbdq0SePGjbOV+fj4qE2bNlqzZo3DddasWaPExES7snbt2mnu3LkO658/f17nz5+3vU5JSZEklSlTJp/RAwAAAAAKKrqXSzp27JgyMjIUFRVlVx4VFaVDhw45XOfQoUN5qp+UlKSIiAjbT0xMjGuCBwAAAAAUWNzpvkrGjRtnd2c8JSVFMTExdC8HAAAAAC9k7V5+JSTdkkqUKCFfX18dPnzYrvzw4cOKjo52uE50dHSe6gcGBiowMDBLeWhoqEJDQ52MHAAAAADgCRkZGbmqR/dySQEBAapXr54WLVpkK8vMzNSiRYvUqFEjh+s0atTIrr4kLVy4MNv6AAAAAIBrD3e6/5WYmKiEhATVr19fDRs21OTJk5WamqqhQ4dKkgYPHqyyZcsqKSlJkjRq1Ci1aNFCr7zyijp27KjZs2dr48aNeueddzx5GAAAAACAAoSk+199+/bV0aNHNX78eB06dEi1a9fW/PnzbYOl7d27Vz4+/+sY0LhxY3388cd6/PHH9eijj6pKlSqaO3euatas6alDAAAAAAAUMMzT7SHJyckqWrSo9u3bx0BqAAAAAOBlrINjnzp1ShEREdnW4063h5w+fVqSmDoMAAAAALzY6dOnc0y6udPtIZmZmTpw4IDCwsJksVg8HY5D1is33I13Du2XP7Rf/tGG+UP75R9tmD+0X/7RhvlD++UP7Zd/Bb0NjTE6ffq0ypQpY/co8uW40+0hPj4+KleunKfDyJXw8PACeZJ7C9ovf2i//KMN84f2yz/aMH9ov/yjDfOH9ssf2i//CnIb5nSH24opwwAAAAAAcBOSbgAAAAAA3ISkG9kKDAzUhAkTFBgY6OlQvBLtlz+0X/7RhvlD++UfbZg/tF/+0Yb5Q/vlD+2Xf4WlDRlIDQAAAAAAN+FONwAAAAAAbkLSDQAAAACAm5B0AwAAAADgJiTdAAAAAAC4CUk3HJoyZYri4uIUFBSk+Ph4rV+/3tMheY3ly5erc+fOKlOmjCwWi+bOnevpkLxKUlKSGjRooLCwMJUqVUrdunXT9u3bPR2WV5k6dapuvPFGhYeHKzw8XI0aNdL333/v6bC8yv79+3XbbbepePHiCg4O1g033KCNGzd6OqwCKTef2XPnzmnEiBEqXry4ihQpop49e+rw4cMeirjgi4uLk8ViyfIzYsQIT4dWIOXl7+7dd98ti8WiyZMnX7X4vEFObZiWlqaxY8fqhhtuUGhoqMqUKaPBgwfrwIEDngvYC5w+fVqjR49WbGysgoOD1bhxY23YsMHTYXmFjIwMPfHEE6pQoYKCg4NVqVIlPf300/Lm8b9JupHFnDlzlJiYqAkTJmjz5s2qVauW2rVrpyNHjng6NK+QmpqqWrVqacqUKZ4OxSstW7ZMI0aM0Nq1a7Vw4UKlpaWpbdu2Sk1N9XRoXqNcuXJ6/vnntWnTJm3cuFGtW7dW165d9euvv3o6NK9w8uRJNWnSRP7+/vr+++/122+/6ZVXXlFkZKSnQyuQcvOZfeCBB/TNN9/os88+07Jly3TgwAH16NHDg1EXbBs2bNDBgwdtPwsXLpQk9e7d28ORFUy5/bv75Zdfau3atSpTpsxVisx75NSGZ86c0ebNm/XEE09o8+bN+uKLL7R9+3Z16dLFA5F6j9tvv10LFy7Uhx9+qK1bt6pt27Zq06aN9u/f7+nQCrwXXnhBU6dO1Ztvvqlt27bphRde0Isvvqg33njD06E5zwCXadiwoRkxYoTtdUZGhilTpoxJSkryYFTeSZL58ssvPR2GVzty5IiRZJYtW+bpULxaZGSk+b//+z9Ph+EVxo4da5o2berpMLzW5Z/ZU6dOGX9/f/PZZ5/Z6mzbts1IMmvWrPFUmF5l1KhRplKlSiYzM9PToRR42f3d/fvvv03ZsmXNf//7XxMbG2teffXVqx6bt8jNd5f169cbSWbPnj1XJygvc+bMGePr62vmzZtnV163bl3z2GOPeSgq79GxY0czbNgwu7IePXqYgQMHeiii/ONON+xcuHBBmzZtUps2bWxlPj4+atOmjdasWePByHCtSk5OliQVK1bMw5F4p4yMDM2ePVupqalq1KiRp8PxCl9//bXq16+v3r17q1SpUqpTp47effddT4flNS7/zG7atElpaWl2f1eqVq2q8uXL83clFy5cuKBZs2Zp2LBhslgsng7HK2VmZmrQoEEaM2aMatSo4elwCoXk5GRZLBYVLVrU06EUSOnp6crIyFBQUJBdeXBwsFauXOmhqLxH48aNtWjRIv3xxx+SpJ9//lkrV65Uhw4dPByZ8/w8HQAKlmPHjikjI0NRUVF25VFRUfr99989FBWuVZmZmRo9erSaNGmimjVrejocr7J161Y1atRI586dU5EiRfTll1+qevXqng7LK/z111+aOnWqEhMT9eijj2rDhg26//77FRAQoISEBE+HV6A5+sweOnRIAQEBWb6cR0VF6dChQx6I0rvMnTtXp06d0pAhQzwditd64YUX5Ofnp/vvv9/ToRQK586d09ixY9W/f3+Fh4d7OpwCKSwsTI0aNdLTTz+tatWqKSoqSp988onWrFmjypUrezq8Au+RRx5RSkqKqlatKl9fX2VkZOjZZ5/VwIEDPR2a00i6ARRYI0aM0H//+1+uCjvh+uuv15YtW5ScnKz//Oc/SkhI0LJly0i8cyEzM1P169fXc889J0mqU6eO/vvf/2ratGkk3VfAZ9b13nvvPXXo0IHnkJ20adMmvfbaa9q8eTM9BVwgLS1Nffr0kTFGU6dO9XQ4BdqHH36oYcOGqWzZsvL19VXdunXVv39/bdq0ydOhFXiffvqpPvroI3388ceqUaOGtmzZotGjR6tMmTJe+3eY7uWwU6JECfn6+mYZVfbw4cOKjo72UFS4Fo0cOVLz5s3TkiVLVK5cOU+H43UCAgJUuXJl1atXT0lJSapVq5Zee+01T4flFUqXLp3l4kS1atW0d+9eD0XkHbL7zEZHR+vChQs6deqUXX3+rlzZnj179OOPP+r222/3dChea8WKFTpy5IjKly8vPz8/+fn5ac+ePXrwwQcVFxfn6fC8ijXh3rNnjxYuXMhd7iuoVKmSli1bpn/++Uf79u3T+vXrlZaWpooVK3o6tAJvzJgxeuSRR9SvXz/dcMMNGjRokB544AElJSV5OjSnkXTDTkBAgOrVq6dFixbZyjIzM7Vo0SKeB8VVYYzRyJEj9eWXX2rx4sWqUKGCp0MqFDIzM3X+/HlPh+EVmjRpkmXKqz/++EOxsbEeiqhgu9Jntl69evL397f7u7J9+3bt3buXvytXMH36dJUqVUodO3b0dChea9CgQfrll1+0ZcsW20+ZMmU0ZswYLViwwNPheQ1rwv3nn3/qxx9/VPHixT0dktcIDQ1V6dKldfLkSS1YsEBdu3b1dEgF3pkzZ+TjY5+m+vr6KjMz00MR5R/dy5FFYmKiEhISVL9+fTVs2FCTJ09Wamqqhg4d6unQvMI///yjHTt22F7v2rVLW7ZsUbFixVS+fHkPRuYdRowYoY8//lhfffWVwsLCbM98RkREKDg42MPReYdx48apQ4cOKl++vE6fPq2PP/5YS5cu5QtmLj3wwANq3LixnnvuOfXp00fr16/XO++8o3feecfToRVIV/rMRkREaPjw4UpMTFSxYsUUHh6u++67T40aNdJNN93k4egLrszMTE2fPl0JCQny8+PrWk6u9Hf38gTR399f0dHRuv766692qAVWTm1YunRp9erVS5s3b9a8efOUkZFh+5wXK1ZMAQEBngq7QFuwYIGMMbr++uu1Y8cOjRkzRlWrVuX7dC507txZzz77rMqXL68aNWrop59+0qRJkzRs2DBPh+Y8zw6ejoLqjTfeMOXLlzcBAQGmYcOGZu3atZ4OyWssWbLESMryk5CQ4OnQvIKjtpNkpk+f7unQvMawYcNMbGysCQgIMCVLljQ333yz+eGHHzwdllf55ptvTM2aNU1gYKCpWrWqeeeddzwdUoGVm8/s2bNnzb333msiIyNNSEiI6d69uzl48KDngvYCCxYsMJLM9u3bPR1KgZfXv7tMGZZVTm24a9eubD/nS5Ys8XToBdacOXNMxYoVTUBAgImOjjYjRowwp06d8nRYXiElJcWMGjXKlC9f3gQFBZmKFSuaxx57zJw/f97ToTnNYowx7k7sAQAAAAC4FvFMNwAAAAAAbkLSDQAAAACAm5B0AwAAAADgJiTdAAAAAAC4CUk3AAAAAABuQtINAAAAAICbkHQDAAAAAOAmJN0AABRCu3fvlsVi0ZAhQ/K1nRkzZshisWjGjBkuiSs7roo3J1frWAAAuBRJNwAAcJmrkTwDAOBN/DwdAAAAcL2yZctq27ZtioiI8HQoueJt8QIAkFsk3QAAFEL+/v6qWrWqp8PINW+LFwCA3KJ7OQAAbnby5En5+vqqU6dOduVbtmyRxWKRxWLRjh077Ja1bNlSwcHBOn/+vF358uXL1blzZ5UoUUKBgYGqUqWKHn/8cZ05c8auXk7dvH/55RfdeuutCgsLU0REhG699Vb997//1ZAhQ2SxWLR7926Hx/HDDz+ocePGCgkJUfHixZWQkKDjx4/bls+YMUMVKlSQJH3wwQe2Y7NYLFq6dGmObZRdvC1btpTFYlFaWpomTpyouLg4BQYG6rrrrtNbb73lcFsnTpzQ3XffraioKIWEhKhBgwb68ssvc9z/L7/8on79+ql06dIKCAhQbGys7rvvPrvjO378uMqVK6ewsLAs71dOywAA1zbudAMA4GaRkZGqVauWVqxYoYyMDPn6+kqSlixZYquzZMkSVa5cWZJ07tw5rV27Vo0bN1ZgYKCtztSpUzVixAgVLVpUnTt3VqlSpbRx40Y9++yzWrJkiZYsWaKAgIAcY/n555/VrFkzpaamqkePHqpSpYo2btyopk2bqlatWtmu9/XXX+vbb79V586d1bhxYy1fvlwzZ87Uzp07tXLlSklS7dq1NWrUKL322muqVauWunXrZls/Li4ur81mp3///lq/fr06dOggX19fffrppxoxYoT8/f11xx132OqdOXNGLVu21NatW9WoUSO1aNFC+/btU9++fdW2bdtsj61Pnz7y8fFR165dFRMTo99++01vvvmmFixYoHXr1ikyMlLFixfXzJkzdcstt2jAgAFatWqV/P39JUnDhw/X/v37NWPGDNv7CACAJMkAAAC3S0xMNJLMunXrbGWdO3c21113nYmJiTH9+/e3lS9atMhIMk899ZSt7NdffzV+fn6mVq1a5tixY3bbTkpKMpLMyy+/bCvbtWuXkWQSEhLs6jZt2tRIMh999JFd+RNPPGEkGUlm165dtvLp06cbScbPz8+sXLnSVp6enm5atmxpJJk1a9Zccb9Xkt16LVq0MJJMfHy8SU5OtpX//vvvxs/Pz1x//fV29SdMmGAkmTvuuMOufP78+bbjmz59uq382LFjJjw83JQtW9bs3r3bbp1PPvnESDIjR460K3/kkUeMJPPwww8bY4yZMmWKkWT3HgIAYEX3cgAAroJWrVpJkhYvXixJysjI0PLly9WqVSu1atUqy11v6WLXaqu3335b6enpeuONN1S8eHG7bT/88MMqWbKkPvnkkxxj2LNnj1auXKlatWppwIABdsvGjh2ryMjIbNcdMGCAmjRpYnvt6+urhIQESdKGDRty3K8rJCUlKTw83Pb6+uuvV5MmTbR9+3adPn3aVj5z5kwFBAToqaeeslu/Xbt2uvnmm7Nsd+bMmUpJSVFSUpJiY2PtlvXr109169bV7Nmz7cqfeuopNWjQQC+//LLeeOMNPfTQQ4qLi9O0adNccagAgEKG7uUAAFwFzZs3l6+vr5YsWaJHHnlEP/30k5KTk9W6dWudOXNGM2fO1LZt21StWjUtWbJEwcHBio+Pt62/du1aSdKCBQu0aNGiLNv39/fX77//nmMMP//8syTZJc9WoaGhql27tl3yf6l69eplKStXrpwk6dSpUznu1xWutP+wsDClpKRo165dql69uqKjo7PUb9asWZa2s7brunXrtHPnzizrnDt3TseOHdOxY8dUokQJSRfb+pNPPlHt2rV1//33y9fXVx999JHdRQEAAKxIugEAuArCw8NVt25drVq1SmlpaVqyZIksFotatWplGwRtyZIlio2N1fr169WiRQu757NPnDghSXr22WedjiElJUWSVKpUKYfLo6Kicoz/cn5+F79GZGRkOB1TbuVm/84cn7Vdp0yZkuP+U1NTbUm3JFWsWFG1atXSqlWrVK9ePTVu3DgXRwEAuBbRvRwAgKukVatWSk1N1fr167V06VLVqFFDJUuWVGxsrCpUqKAlS5bYknJrd3Qra9KZkpIiY0y2PzmxbuPIkSMOlx8+fNgFR+k5zhyfdZ2tW7fm2K6Xdz2fNGmSVq1apeLFi2v9+vXZjqQOAABJNwAAV4k1kf7hhx+0YsUKtW7d2rasdevWWrp0qe2Z70uf55Zk62pu7Q7tDOvo5KtXr86y7MyZM7bu5/lhHZn9atz9vlx4eLgqVKigHTt26NChQ1mWr1ixIkuZtV3XrFmT6/389NNPevTRR3X99ddr69atqlChgh566CH9+uuvzgcPACi0SLoBALhKmjZtKj8/P02dOlWnT5+2S7pbtWqlY8eO6b333lNoaKgaNGhgt+69994rPz8/3Xfffdq7d2+WbZ86dUo//fRTjvuPjY1VkyZNtGXLFs2ZM8du2UsvvWTrap0fkZGRslgs2rdvX7635YxBgwbpwoULGj9+vF35Dz/84PBZ+KFDhyosLEyPPfaYw6T5zJkzdhc6UlNT1b9/f0nSJ598otKlS+vjjz9WWlqa+vfvr3Pnzrn4iAAA3o5nugEAuEqKFCmiBg0aaM2aNfLx8VGLFi1sy6x3wY8ePap27drZ5n+2qlmzpt566y3dc889uv7663XrrbeqUqVKOn36tP766y8tW7ZMQ4YMueII2m+88YaaN2+ugQMH6vPPP1flypW1efNmrV27Vs2bN9fy5cvl4+P8NXnrMS5fvlyDBg1SlSpV5OPjo0GDBmXpou0ODz/8sL744gu9++67+vXXX9W8eXPt27dPn376qTp27Khvv/3Wrr511PfevXurVq1aat++vapWrarz589r9+7dWrZsmRo3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cvQIyqXn1dmzZ/XII48oNjZWgYGBqly5sl544YVs23DZsmVq3bq1wsLCFBkZqVtvvVUbN27UjBkzZLFYNHHixJyaGgCuzAAACpzmzZsbSWbXrl22soyMDBMZGWkkmYCAAJOammpbdurUKePj42Nq1Khht53t27ebmJgYI8nExcWZrl27mtatW5uQkBAjybz00ktZ9i3JxMbGZikfPXq0bd/t2rUzffr0MdHR0SYuLs506dLFSDJLlixxuK0+ffqYIkWKmE6dOplOnTqZiIgII8kMHDjQVnfbtm0mISHBhIaGGkkmISHB9vPggw9esc2qVq1qJJkdO3Y4XB4fH28kmU2bNtnKxo4daywWi7nhhhtMp06dTM+ePU21atWMJBMeHm5+/vnnLNuJjY01l//5XLJkiS1mRxISEhy2T17fn40bN5qgoCAjydx4442mT58+plOnTqZ69eoOt5+dCRMmGElm+vTpduVnzpwxrVq1MpJMsWLFzC233GI6d+5sSpUqZSSZLl26mIyMDLt1+vbta/z8/EzdunVNt27dTLdu3UxcXJyRZEqXLm32799vV3/Xrl1GkmnYsKGpXbu2iYyMNN26dTM9evQwEydOtGvjMWPGmICAANO2bVvTvXt3WxzNmjUzmZmZ+Y59w4YNpkiRIkaSqVmzpunXr5+pV6+esVgs5t57783xPXVEkilfvrzp1KmTCQ4ONp06dTI9evSwne8333yzSU9Pt9V//fXXjSTz0EMPOdzexIkTjSTzzDPP5Gr/LVq0MJLMiBEjjMViMc2bNzf9+vWzvR/lypUz+/bts1snPT3d3HrrrbZzvlu3bqZr164mLCzMSDLdu3fP0m5///23qVixou14+/bta1q3bm18fX2NJDNp0iS7+nv37jXFihUzkkyVKlVMz549Tbdu3UydOnWMxWKxnYdffvml6dmzp5FkoqKi7H4HvPvuu7btOfoMWs+rRo0amaZNm5pixYqZHj16mHbt2tk+M4899liWNvv8889tcd90002mX79+pkaNGiYwMNDcfffdRpKZMGFCrtofALJD0g0ABdD48eOzJEWbN282kkyNGjWMJLNw4ULbsq+//tr2ZdsqPT3d3HDDDUaSefHFF+2+OP/555+mQoUKxtfX12zdutVu346S7hUrVtiSmUvrp6ammnbt2hlJ2Sbdkky1atXMwYMHbeV/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+HDz/vvv25bnNGVYdudVduf8559/bou7UaNGpn///qZmzZomICDA3HnnnUaSefbZZ3PT/ACQLZJuACjAFi5cmO2cxpfOdzx79uxst3Hq1CnzzDPPmLp165oiRYqYoKAgExcXZ9q1a2emTJlijh49alc/u0Q5MzPTTJs2zdxwww0mMDDQlCpVyiQkJJiDBw+aNm3aGElZ5sd1JulOS0szjz/+uKlUqZLx9/fPcRvZWbBgga1tBg8enG29M2fOmMcee8xUqVLFBAYGmpiYGHP33XebY8eOOZxb25icE8Lp06fbvrBHRUWZ22+/PcdtGZO39+frr782w4YNMzVq1DBFixY1ISEh5rrrrjO33367w7mJs5NdAmLMxSTsgw8+MK1btzbFihUz/v7+pkyZMqZRo0bmySefNNu3b7erf+LECXPPPfeYuLg4ExgYaCpWrGjGjh1rUlNTbUng1Ui6nYndGGN++eUX07lzZxMREWFCQ0NNo0aNzLx5864497oj1nP13Llz5tFHHzVxcXEmICDAxMbGmsceeyzbiz9Wjz/+uJFkxo0bl+t9XurS9p4+fbqpXbu2CQoKMsWLFzeDBg0y+/btc7heWlqaee2110ydOnVMSEiICQkJMfXr1zdTpkxxOIe5MRfn/X7wwQdNpUqVTEBAgClatKhp27atw/m+ly1bZkaMGGFq165tihcvboKCgkzFihVNv379HM7VfvjwYTNo0CATHR1tS4gvfR9cmXQbc/GcatmypQkNDTXh4eGmbdu2Zt26deaZZ54xksy0adMcbhMAcstijAuGZQUAXLP++ecfVahQQefOndOpU6c8Ptoy4I2MMapWrZr++OMP7dixQxUrVvR0SNe89u3ba8GCBVq7dq3i4+M9HQ4AL8Yz3QCAXNm2bZvOnDljV5aSkqI777xTx44dU79+/Ui4ASf95z//0fbt23XrrbeScF9F+/fvzzIGQGZmpl599VUtWLBA1113nRo2bOih6AAUFtzpBgDkyt13361Zs2apXr16Kl26tI4dO6affvrJNiLz2rVrVbJkSU+HCXiV22+/XadOndK8efOUnp6udevWqV69ep4O65oxe/Zs3XbbbapTp45iY2N1/vx5/fe//9Xu3bsVEhKi+fPnX3EkdgC4EpJuAECu/PDDD3rrrbe0adMmHTt2TNLFUbs7d+6shx9+OMuUXACuzGKxyM/PT1WqVNFTTz2lXr16eTqka8qff/6ppKQkrVixQocPH9a5c+cUHR2tli1b6pFHHlH16tU9HSKAQoCkGwAAAAAAN+GZbgAAAAAA3ISkGwAAAAAAN/HzdADXqszMTB04cEBhYWGyWCyeDgcAAAAAkAfGGJ0+fVplypSRj0/297NJuj3kwIEDiomJ8XQYAAAAAIB82Ldvn8qVK5ftcpJuDwkLC5N08Q0KDw/3cDQAAAAAgLxISUlRTEyMLbfLDkm3h1i7lIeHh5N0AwAAAICXutLjwgykBgAAAACAm5B0AwAAAADgJiTdAAAAAAC4CUk3AAAAAABuwkBqyNHEiRM9HYLH0QYAAAAAnMWdbgAAAAAA3ISkGwAAAAAANyHpBgAAAADATUi6AQAAAABwE5JuAAAAAADchKQbAAAAAAA3IekGAAAAAMBNXJJ0nzhxQvv27XPFpgAAAAAAKDScTrqTk5M1atQoRUVFqWTJkqpQoYJt2bp163Trrbdq06ZNLgkSAAAAAABv5FTSfeLECcXHx+uNN95QTEyMqlWrJmOMbfmNN96oVatW6aOPPnJZoAAAAAAAeBunku6JEyfqjz/+0OzZs7Vx40b17t3bbnlwcLBatGihxYsXuyRIAAAAAAC8kVNJ99dff61OnTqpT58+2daJi4vT33//7XRgAAAAAAB4O6eS7oMHD6p69eo51gkMDFRqaqpTQQEAAAAAUBg4lXQXL178iqOV//777ypdurRTQQEAAAAAUBg4lXQ3b95cX331Vbbdx3/77TfNnz9fbdq0yVdwAAAAAAB4M6eS7scee0wZGRlq0qSJPvroIx07dkyStG3bNr333ntq3bq1AgMDNWbMGJcGCwAAAACAN/FzZqUbbrhBc+bM0aBBgzR48GBJkjFGNWvWlDFGYWFh+vTTT1WlShWXBgsAAAAAgDdxKumWpC5dumjXrl364IMPtG7dOp04cULh4eGKj4/X0KFDVaJECVfGCQAAAACA13E66ZakYsWK6YEHHnBVLAAAAAAAFCpOPdMNAAAAAACuzKk73TNnzsx1Xesz3wAAAAAAXGucSrqHDBkii8WSYx1jjCwWC0k3AAAAAOCa5VTSPX36dIflycnJ2rx5sz7++GN16dJFnTt3zldwAAAAAAB4M6eS7oSEhByX33XXXWrdurXuuecep4ICAAAAAKAwcMtAao0aNVKXLl00fvx4d2weAAAAAACv4LbRy2NjY/Xzzz+7a/MAAAAAABR4bkm6jTFavny5goOD3bF5AAAAAAC8glPPdC9fvtxheXp6uvbv36+ZM2dqw4YNjFwOAAAAALimOZV0t2zZMscpw4wxatKkiSZNmuR0YAAAAAAAeDunku7x48c7TLp9fHwUGRmpBg0aKD4+Pt/BXW1TpkzRSy+9pEOHDqlWrVp644031LBhQ4d1Z8yYoaFDh9qVBQYG6ty5c1cjVAAAAACAF3Aq6Z44caKLw/C8OXPmKDExUdOmTVN8fLwmT56sdu3aafv27SpVqpTDdcLDw7V9+3bb65zu/gMAAAAArj1uG73c20yaNEl33HGHhg4dqurVq2vatGkKCQnR+++/n+06FotF0dHRtp+oqKirGDEAAAAAoKAj6ZZ04cIFbdq0SW3atLGV+fj4qE2bNlqzZk226/3zzz+KjY1VTEyMunbtql9//TXbuufPn1dKSordDwAAAACgcMtV0u3j4yNfX988//j5OdV7/ao7duyYMjIystypjoqK0qFDhxyuc/311+v999/XV199pVmzZikzM1ONGzfW33//7bB+UlKSIiIibD8xMTEuPw4AAAAAQMGSq6y4efPmPK98mUaNGqlRo0a2140bN1a1atX09ttv6+mnn85Sf9y4cUpMTLS9TklJIfEGAAAAgEIuV0n30qVL3RyGZ5UoUUK+vr46fPiwXfnhw4cVHR2dq234+/urTp062rFjh8PlgYGBCgwMzHesAAAAAADvwTPdkgICAlSvXj0tWrTIVpaZmalFixbZ3c3OSUZGhrZu3arSpUu7K0wAAAAAgJfxjoeur4LExEQlJCSofv36atiwoSZPnqzU1FTbXNyDBw9W2bJllZSUJEl66qmndNNNN6ly5co6deqUXnrpJe3Zs0e33367Jw8DAAAAAFCA5CvpXrNmjX788UcdOHBA58+fz7LcYrHovffey88urpq+ffvq6NGjGj9+vA4dOqTatWtr/vz5tsHV9u7dKx+f/3UMOHnypO644w4dOnRIkZGRqlevnlavXq3q1at76hAAAAAAAAWMxRhj8rpSenq6+vfvry+++ELGGFksFl26Getri8WijIwMlwZcWKSkpCgiIkLJyckKDw/3dDjZmjhxoqdD8DjaAAAAAMDlcpvTOfVM9yuvvKLPP/9c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",
      "text/plain": [
       "<Figure size 1000x550 with 3 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# load in dataset\n",
    "data = np.loadtxt(data_path_2,delimiter = ',')\n",
    "x = data[:-1,:]\n",
    "y = data[-1:,:] \n",
    "\n",
    "# import booster\n",
    "mylib = section_9_6_helpers.BoostSetup(x,y)\n",
    "\n",
    "# choose normalizer\n",
    "mylib.choose_normalizer(name = 'standard')\n",
    "\n",
    "# choose cost\n",
    "mylib.choose_cost(name = 'softmax')\n",
    "\n",
    "# choose optimizer\n",
    "mylib.choose_optimizer('newtons_method',max_its=10)\n",
    "\n",
    "# run boosting\n",
    "mylib.boost(num_rounds=10)\n",
    "\n",
    "# plot round history\n",
    "mylib.plot_history();"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "IQKyRREs0nCr"
   },
   "source": [
    "##  Boosting is an effecient scheme"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "uq4lx7Z90nCr"
   },
   "source": [
    "The *boosting* idea detailed above is a *greedy* algorithm, meaning that at each stage we choose the next most important feature-touching weight and tune it properly by literally *trying out all remaining feature-touching weights* by solving a set of respective subproblems, *not* by leveraging some abstract mathematical criterion.  While each round of boosting demands we solve a number of subproblems, each one is a minimization with respect to *only a single weight* and is therefore very easy to solve virtually regardless of the local optimization scheme used.  This makes *boosting* a computationally effective approach to feature selection, and allows it to scale to datasets with large $N$.  A weakness inherent in doing this - that is in determining *one feature-touching weight at a time* - is that interactions between features / feature-touching weights can be potentially missed."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "q9_2oGiE0nCr"
   },
   "source": [
    "To capture potentially missed interactions between groups of features  / weights one might naturally extend the boosting idea and try to add *a group of $R$ feature-touching weights* at each round instead of just one weight.  However a quick calculation shows that this idea would quickly fail to scale.  In order to determine the first best group of $R$ feature-touching weights at the the *first* stage of this approach we would need to try out *every combination of $R$ weights* by solving a subproblem for each.  The problem is that there are *combinatorially many subgroups of size $R$*.  More precisely there are ${N \\choose R} = \\frac{R!}{N!\\left(N-R\\right)!}$ subproblems, and thus equally many subproblems to solve (this is far too many problems to solve in practice e.g., ${100 \\choose 5} = 75,287,520 $)."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "kB89FBfv0nCr"
   },
   "source": [
    "## The residual perspective on boosting regression"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "ZlRLiTAz0nCs"
   },
   "source": [
    "Let us examine the $n^{th}$ subproblem in the $M^{th}$ stage of boosting, that is the minimization of the Least Squares cost"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "cG4WlaOh0nCs"
   },
   "source": [
    "\\begin{equation}\n",
    " \\frac{1}{P}\\sum_{p=1}^{P}\\left(\\text{model}_{M-1}^{\\,}\\left(\\mathbf{x}_p,\\mathbf{w}\\right) + w_n^{\\,}x_{n,p}   - \\overset{\\,}{y}_{p}^{\\,}\\right)^{2}\n",
    "\\end{equation}"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "z3gSC8ZT0nCs"
   },
   "source": [
    "and re-arrange the terms in each summand and denote $r_p^M=\\left(   \\overset{\\,}{y}_{p}^{\\,} - \\text{model}_{M-1}^{\\,}\\left(\\mathbf{x}_p,\\mathbf{w}\\right)\\right)$ \n",
    "\n",
    "\\begin{equation}\n",
    " \\frac{1}{P}\\sum_{p=1}^{P}\\left(w_n^{\\,}x_{n,p} - r_p^M \\right)^{2}.\n",
    "\\end{equation}"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "QXaAUy2T0nCs"
   },
   "source": [
    "Notice that the term $r_p^M$ on the right hand side of each summand is *fixed*, since $w_n$ is the only weight being tuned here.  This term $r_p^M$ is the *residual* of the original output $y_p$ after the contribution of model $\\text{model}_M$ has been subtracted off.  We can then think about each round of boosting as *determining the next feature that best correlates with the residual from the previous round*.  "
   ]
  }
 ],
 "metadata": {
  "anaconda-cloud": {},
  "colab": {
   "include_colab_link": true,
   "provenance": []
  },
  "kernelspec": {
   "display_name": "venv",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.15"
  },
  "toc": {
   "colors": {
    "hover_highlight": "#DAA520",
    "navigate_num": "#000000",
    "navigate_text": "#333333",
    "running_highlight": "#FF0000",
    "selected_highlight": "#FFD700",
    "sidebar_border": "#EEEEEE",
    "wrapper_background": "#FFFFFF"
   },
   "moveMenuLeft": true,
   "nav_menu": {
    "height": "179px",
    "width": "252px"
   },
   "navigate_menu": true,
   "number_sections": true,
   "sideBar": true,
   "threshold": 4,
   "toc_cell": false,
   "toc_position": {
    "height": "631.733px",
    "left": "0px",
    "right": "1228px",
    "top": "116.267px",
    "width": "212px"
   },
   "toc_section_display": "block",
   "toc_window_display": false,
   "widenNotebook": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
